package com.lmabbe.core.common.converter;

import com.lmabbe.core.common.dto.SysResourceDTO;
import com.lmabbe.core.common.entitys.SysResource;
import com.lmabbe.core.common.vo.SysResourceTreeVO;
import com.lmabbe.core.common.vo.SysResourceVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Named;

import java.util.List;

/**
 * 系统资源转换类
 *
 * @author lmabbe
 */
@Mapper(componentModel = "spring")
public interface SysResourceConverter {

    /**
     * 实体类转Vo
     *
     * @param SysResource
     * @return
     */
    SysResourceTreeVO entity2TreeVo(SysResource SysResource);


    /**
     * dto转实体
     *
     * @param to
     * @return
     */
    SysResource dto2Entity(SysResourceDTO to);

    /**
     * dto转实体
     *
     * @param to
     * @return
     */
    @Mapping(target = "resourceId", source = "resourceId")
    SysResource dto2Entity(SysResourceDTO to, Long resourceId);

    /**
     * 数据列表转Vo列表
     *
     * @param list
     * @return
     */
    List<SysResourceVO> list2Vos(List<SysResource> list);

    /**
     * 实体转VO
     *
     * @param entity
     * @return
     */
    @Named("entity2Vo")
    SysResourceVO entity2Vo(SysResource entity);
}
